#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main( void )
{
    pid_t pid;
    if ( (pid=fork()) == -1 )
        perror("fork"),exit(1);
    if ( pid == 0 ){
        sleep(20);
        exit(10);
    } else {
        int st;
        //st低七位表示信号信息，
        int ret = wait(&st);
        //0X7F 后七位
        //WIFEXITED 用于判断子进程是否是因为收到了一个未被捕获的信号而异常终止
        //WEXITSTATUS()(st>>8)&0XFF 获取退出码  WIFSIGNALED st & 0X7F 获取信号
    if ( ret > 0 && ( WIFSIGNALED(st) ) == 0 ){ // 正常退出
        printf("child exit code:%d\n",WEXITSTATUS(st) ); //退出码
    } else if( ret > 0 ) { // 异常退出
        printf("sig code : %d\n", WIFSIGNALED(st) );
        }
    }
}
